Computer Application Data In Search Results

ABSTRACT

A computer-implemented search method includes receiving a registration request from each of one or more computer applications installed on a computing device and registering the applications in response to the request, wherein the registration request indicates an intent by the application to receive search query information from a search application associated with the device. The method also includes receiving user input on the device in the form of a query, providing the query to the one or more registered applications, receiving responses from the one or more registered applications that include data that is managed by the one or more registered applications; integrating the responses into a result set; and presenting the result set with the computing device.

CROSS-REFERENCED TO RELATED APPLICATIONS

This application claims the benefit under 35 U.S.C. §119(e) of U.S.Patent Application No. 61/181,643, titled “Computer Application Data inSearch Results,” filed May 27, 2009, which is incorporated herein byreference.

TECHNICAL FIELD

This document relates to systems and techniques for providinginformation in response to queries on a computing device, such as asmart phone.

BACKGROUND

The amount of electronic information available to us continues to growand grow and grow. That information includes public information, such asinformation that is available on the World Wide Web and is frequentlylocated using public search engines. The information also includes ourown private information, such as contact and scheduling information onour portable electronic devices. As the information continues to grow,it gets harder to separate the wheat from the chaff and to present to auser the information in which they are most interested at the moment.

The manner of presenting information to a user is also a challenge. Forexample, some users are most interested in public content, while othersmay be interested in finding their own private information. Yet otherusers may be interested in finding information from different sources,or corpora, such as information about media files on their portableelectronic device. The content of the information provided to a userwhen they are searching for information, the order in which it ispresented to them, and the manner in which it is presented, can allcontribute to the user's satisfaction with their device and with theservices they use on their device.

SUMMARY

This document describes systems and techniques that may be employed tointeract with a user of a computing device, like a mobile telephone thatruns a search application. In general, the techniques may permit asearch application to return search results—such as in the form ofactual results or as suggestions for search queries the user may want tosubmit—from a number of different corpora, including corpora that aremanaged by third-party applications on the device. A third-partyapplication is an application that is not part of the operating systemfor the device, and generally involves applications that are added tothe device by the user after they have purchased the device. Forexample, a contacts manager that is integrated with the operating systemon a smart phone would not be a third-party application, while a mediaplayer that is provided by a company that differs from the company thatprovided the operating system, would be a third-party application.

Using the techniques discussed here, the third-party applications mayhave their information integrated with other results provided by thesearch application by registering themselves with the searchapplication. Then, when a partial or complete query is entered by theuser into the search application, the search application may send thequery to all registered applications, and may receive results back fromthose registered applications. The search application can also searchcore applications that are part of the operating system, such as acontacts database or a list of applications that are loaded on thedevice. In addition, the search application may, in appropriatecircumstances, send the query to search services that are remote fromthe device, such as standard public search engines, and may receiveresults in the form of search suggestions or a list of final searchresults, from such services. The search application may then aggregateall the various responses and display them to a user of the device.

The manner in which the results are sorted for presentation to the usermay be arranged so as to reflect likely interests of the user. Forexample, results that are intrinsic to the operating system may, atleast at first, be provided with priority (i.e., displayed first in agroup of results) under the assumption that a user will be mostinterested in items that were important and central enough that theywere incorporated into the operating system. Web results may also beprovided a relatively high priority. Results from third-partyapplications may initially be given a lower priority, and may be placedinitially on a second page of search results. However, if a user selectsa result for a particular third-party application, then the results forthat application may be “promoted” to the first page, and subsequentselections by the user of such results may cause the results to moveeven higher in the list of results that are shown by the searchapplication.

In certain implementations, such systems and techniques may provide oneor more advantages. For example, a user may be provided with anintegrated presentation of search results that span across multiplecorpuses from multiple different locations, including on the user'spersonal computing device. Also, the ranking and presentation of resultscan correspond to preferences of the user that are inferred from theuser's actions, such as the user's responses to prior presentations ofresults. Also, the techniques discussed here can permit third-partyapplication developers to have their data included in a global searchresult, in a manner of their choosing, so that they can maximize theusefulness of the results to a user of a computing device. For each ofthese reasons, the user experience for a user of a computing device canbe improved, so that the use employs the search service more frequently,and has a positive impression of their device and its software (whichmay lead to follow-up purchases by the user, or word-of-mouthadvertising from the user to potential buyers of the device ofsoftware).

In one implementation, a computer-implemented search method isdisclosed. The method comprises receiving a registration request fromeach of one or more computer applications installed on a computingdevice and registering the applications in response to the request,wherein the registration request indicates an intent by the applicationto receive search query information from a search application associatedwith the device. The method also comprises receiving user input on thedevice in the form of a query, providing the query to the one or moreregistered applications, receiving responses from the one or moreregistered applications that include data that is managed by the one ormore registered applications, integrating the responses into a resultset, and presenting the result set with the computing device. Theregistering of the applications can comprise storing registrationinformation for the registered applications, and providing the query tothe one or more registered applications comprises accessing theregistration information to determine a mechanism for providing thequery to each of the registered applications. Also, the query cancomprise characters entered by a user without entering a querysubmission command.

In some aspects, providing the query to the one or more registeredapplications comprises providing an updated query automatically to theregistered applications for each character entered by the user of thecomputing device. The method can also comprise providing the query toone or more search services that are remote from the computing device.In addition, the method can include suppressing the providing of thequery to the one or more search services until the user has entered adetermined amount of information in the query. The determined amount ofinformation can include a predetermined number of characters in thequery.

In certain aspects, integrating the responses into a result setcomprises integrating responses from the registered applications withresponses from one or more operating system components on the computingdevice and responses from one or more remote search services. Also,integrating the responses into a result set can comprise ranking theresponses with respect to whether each response was generated form anoperating system component, from a registered application, or a remotesearch service. Alternative, integrating the responses into a result setcan comprise ranking the responses with respect to whether the user ofthe device has previously selected results provided by a particularregistered application.

In another implementation, a computer-implemented search method isdescribed that includes receiving user input on a computing device inthe form of a query, and providing the query to a plurality of differentsearch result resources that include one or more applications on thecomputing device and one or more search services remote from thecomputing device. The process also include receiving a plurality ofresponses from the plurality of different search result resources andintegrating the plurality of responses with others of the plurality ofresponses and placing the responses in a ranked order, and displayingthe plurality of results on the computing device. Placing the responsesin a ranked order in this implementation comprises assigning an initialscore to results from a particular search result resource, and modifyingthe score positively if a user selects a result from the particularsearch result resource.

In some aspects, placing the responses in a ranked order comprisesassigning an initial score to responses from applications installed onthe device so that the responses do not appear on an initial searchresults display, but are elevated to an initial search results displayonce a response from a particular application is selected by the user.The method can also include suppressing the providing of the query toone or more search services remote from the computing device until athreshold level of information has been entered in the query, whileproviding the query to the applications on the computing device. Inaddition, the method can include receiving registration requests formthe one or more applications on the device, and registering theapplications by storing registration information for the applications,and wherein providing the query to the one or more applicationscomprises accessing the registration information to determine amechanism for providing the query to each of the applications. Moreover,providing the query to a plurality of search result resources cancomprise providing an updated query automatically to the registeredapplications for each character entered by the user of the computingdevice.

In yet another implementation, a computer-implemented search systemincludes memory storing registration information stored on a computingdevice, the registration information identifying manners for providingsearch query information entered by a user of the computing device, andone or more third-party applications on the device corresponding to theregistration information and defining interfaces for receiving thesearch query information and for providing corresponding search resultsgenerated by the third-party applications. The system also includes asearch application having code to use the registration information toroute search query information to the third-party applications, tointegrate the search results into a result set, and to present theresult set to the user with the computing device. The system canadditionally include one or more of search systems located remote fromthe computing device, wherein the search application includes code toprovide the search query information to the search systems, and tointegrate results from the search systems with results from theapplications. The system can additionally include a result ranker toproduce a ranked order of the integrated results, and the result rankercan access information indicating the user's responses to prior resultscorresponding to the one or more third-party applications.

In another implementation, a system includes memory storing registrationinformation and one or more third-party application as in theimplementation above. The system also includes a means for generating anintegrated ranked list search results form the one or more third-partyapplications.

The details of one or more embodiments are set forth in the accompanyingdrawings and the description below. Other features and advantages willbe apparent from the description and drawings, and from the claims.

DESCRIPTION OF DRAWINGS

FIG. 1 is a conceptual diagram that shows a search application on acomputing device that receives search results from a variety ofdifferent sources.

FIG. 2 shows an example search session by a user of a mobile computingdevice and corresponding search results from a variety of sources.

FIG. 3 is a schematic diagram of a system that provides search resultsfrom third-party applications and other corpuses of data.

FIG. 4A is a flow chart of an example process for providing searchresults from a plurality of data sources.

FIG. 4B is a flow chart of an example process for providing searchresults from a plurality of data sources in a particular ranked order.

FIG. 5 is a swim lane diagram that shows a process for delivering searchresults for multiple corpora.

FIG. 6 shows screen shots from a mobile computing device deliveringsearch results for multiple corpora.

FIG. 7 shows an example of a generic computer device 700 and a genericmobile computer device 750, which may be used with the techniquesdescribed here.

Like reference symbols in the various drawings indicate like elements.

DETAILED DESCRIPTION

This document describes systems and techniques by which a searchapplication on a computing device can integrate and deliver results fromvarious different sources. The sources can include applications that arenative to the operating system on the device, third-party applicationsthat have been loaded on the device, and remote servers that servesearch results in response to the submission of search queries. Theparticular results can include suggestions, which may be terms thatbegin with the characters a user has already entered, and whoseselection will cause the terms to be submitted to a search engine forthe delivery of information that can lead to records or documents suchas web pages, or final search results, which themselves point to thefinal records or documents. Also, a mix of results in the form ofsuggestions and final search results may be provided. Such provision ofresults may occur while a user is entering a query (e.g., betweenindividual character entries by the user on a keyboard), and also afterthe user has submitted a completed query.

The results may be sorted by inferring what categories of informationthe user is most interested in. As an initial matter, it can be assumedthat the user is most interested in information associated withapplications that are central to their device, such as personalinformation manager applications like scheduling and contactsapplications. The user may also be interested in seeing the names ofapplications that have been loaded onto their device, as a mechanism forlaunching such applications (e.g., if the user has not chosen to add anicon for a particular application to their desktop). In addition, it canbe assumed that a user will be interested in web search results (whichmake up the vast majority of on-line search requests). The user mightalso want to search in data stored and managed by various applicationsthat they have loaded on their device, though it may be difficult for asearch application to determine, initially, how interested the userwould be. As a result, a search application may initially treat suchinformation as having a low interest, and then promote such informationin rankings of subsequent search results as a user interacts withresults directed to that particular application, or as the userinteracts with data in the application.

FIG. 1 is a conceptual diagram that shows a search application 100 on acomputing device that receives search results from a variety ofdifferent sources. The search application 100 appears at the middle ofthe figure, surrounded by icons that represent each of a plurality ofcorpuses or sources of information that can be accessed via the searchapplication 100. In general, the arrangement shows how numerousdifferent sources of information can provide content for a search, andhow the search application 100 can rank and present parts of thatcontent.

For purposes of this example, the content sources are shown as fallinginto one of three groups. First, there are the native applications 102.These are applications (and corresponding data sources) that areprovided with a device initially and with the search application thatalso comes with the device. Frequently, native applications for mobiledevices take the form of personal information management applications,such as address or contact books, task lists, and appointment books orcalendars. The applications may also include a web browser, where thenative application data may include a history list or bookmarks—andwhere a user may want to use the search application 100 to quickly finda link to one of their favorite web pages (e.g., when they don't want tohave to manually launch the browser and then select the bookmark or typethe URL). In addition, the native application data may includeidentifies of applications themselves, so that the search resultincludes a title of an application overlying a link whose selectioncauses an instance of the application to launch.

Remote services 104 are also shown, and can take a wide variety ofwell-known forms. The most common type of remote service is a typicalweb search engine that provides a list or other organization of objectsthat a user may select to be taken to web pages (i.e., landing pages) orother documents that are responsive to a query submitted by the user.The remote services can also provide recent news stories as searchresults; lists of products that a user might be able to buy, prices forthe products, and links to sellers of the products; and socialnetworking information such as data from pages of friends of a deviceuser.

In addition, one or more remote services may provide suggestions asresults to a partial user query. Suggestions are terms that a serviceinfers the user might be trying to enter while the user is stillentering a query. Suggestions are presented before the user submits afinal search result (e.g., by pressing an enter key or clicking a submitbutton), and are educated guesses at the final query that the user is inthe process of entering. Generally, the suggestions are selected from agroup of all terms that begin with the characters the user has enteredso far, sorted by a metric such as the frequency with which such termshave appeared in past searches provided by a plurality of users to thesearch service. In some situations, selection of a suggestion causes asearch to be performed that uses the selected suggestion as the queryterm, and that returns a plurality of search results. In othersituations, the suggestion is the result itself, and selection of thesuggestion brings up the target document for the result. For example, asearch application may return actual contact information for particularcontacts while a user is typing a query, so that selection of adisplayed name for a contact will result in that person's telephonenumber being dialed automatically, or in a complete contact record forthat person being displayed.

Certain operations by a user may also occur across corpora, such aswhere a contact's name comes up in the middle of a user's entering of aquery, and the user selects the contact name for a web search. The namemay then be submitted to a web search service and web search results maybe returned, rather than opening a contact record for that person.

The third group of search data comes from third-party applications. Theapplications can take a near infinite variety of forms, and may addressa near infinite number of topics. In this example, three suchapplications are shown for purposes of illustration. First, a socialapplication may store information (either locally on the device orremotely at a hosted service) about a user's social network, such asnames of friends and the like. The social application may be used inplace of or in combination with the social service shown in the remoteservice 104. For example, certain limited information, such as names andURL's for friends, may be stored locally on a device and synchronizedwith the social service, and more detailed information such as contenton friends' pages, can be stored centrally and provided via the socialservice. Second, a navigator application can provide maps to a user andkeep track of locations visited by the user. The navigator data mayinclude, for example, names of locations (e.g., Camden Yards, SheaStadium, etc.) and may be returned as search results that a user mayselect to be shown a map of the area associated with a selected name.Third, a media player is shown, and its data may include the names ofmedia files (e.g., titles of songs or movies), the names of artists(e.g., singers, groups, actors, or directors), playlists, and the like,where a user selection can cause a folder showing songs from aparticular artiest, or can cause a particular media file to beginplaying.

An example display for the search application 100 is shown at the middleof the figure. In this example, the user is in the process of entering aquery that begins with the characters “zeb.” Each time the user enters acharacter, the then-current search string can be submitted to thevarious relevant search sources, and results from those sources can bedisplayed in an area around the search box where the user is typing asquickly as is practical.

Example results that have been gathered from the various picturedsources are shown on the display for the search application in themiddle of the figure. The results are shown generally in the form of asuggestions box that may pop up temporarily below a search entry boxthat is generated by the search application 100. In this example, theresults have been sorted by the search application 100 in a particularorder. The first result is a search suggestion that, if selected by theuser, will cause the device to perform a web search for the term thathas been entered so far. Such an item could also provide a suggestion ofa more complete term that includes the letters that have been entered sofar (e.g., zebra).

The second entry in the list indicates that two bookmarks or historieshave been located that begin with the characters “zeb.” Such a resultcomes from data local to the machine, and in particular, a web browser.The web browser that supplied the information may be integrated with theoperating system so that the operating system is specifically programmedso that the pictured information gets to the search application 100. Ina similar manner, the third entry shows a single contact that isresponsive to the search, and because a single contact can be displayedin a minimum of screen space, the actual name of the contact may beshown in a manner so that the user of the device can select the contactwithout any further selections. A threshold may be set on a device tocontrol the number of records that could be shown in such a displaybefore the display will collapse into a single-line summary display likethat shown for the bookmarks and history result.

The fourth result is from a third-party application on the device—i.e.,the media player shown in the zone of registered applications 106. Suchan application may register itself with the operating system on thedevice so that when any search characters are received by the searchapplication 100, the search application understands to forward thosecharacters to a location identified by the third-party application. Inthis example, the music player received the query string of “zeb” andfound a single item that was responsive to such a request—the song “OurStripes” by “The Zebras.”

The particular order of the results on the search application 100 candepend on assumptions about corpuses that will most interest a user, inaddition to data reflecting a user's prior responses to results fromsuch corpuses. For example, web search is at the top here, and may havebeen assigned such a position by the search application under anassumption that users who employ a search box generally want to conductat least a search of web properties. The next two results appear intheir positions under a presumption that a user of a device has a coreinterest in material they have placed on the device. Finally, the musicresult reflects an assumption that the information from a third-partyapplication—absent a user action to the contrary—will be of lesserrelevance to a user. The music result may climb, and may already haveclimbed, based on a user's selection of music results that weredisplayed in response to prior search queries on the user's device—suchselections indicating that, not only did the user want a music-playingapplication on their device, but they actually want to, and do, use thesearch application 100 to find that information.

In certain implementations, as described in more detail below,submission of a partial query may be suppressed to certain corpora incertain situations. For example, characters may not be submitted to theremote services 104 until a certain number of characters have beenentered, such as 3 or 4 characters. In this manner, results local to theuser's device may have initial prominence and the user may select themif that is what the user is looking for. Also, the number of members inthe local corpora for a single character is relatively small (tens orhundreds) compared to the number of members for remote services such asweb search (millions or billions). As a result, local corpora are morelikely to provide useful results for such single-character ortwo-character entries than would the remote services (which wouldlargely be guessing in the dark if they were asked to provide a responseto the query “z”). The remote service results can then be blended in,and may take prominence, after the triggering number of characters havebeen entered. Alternatively, the remote services may be consulted, butdisplay of their results may be suppressed until the number of hitsfalls below a threshold number that represents that the results arerelatively accurate, or until an accuracy score from the remote servicehits a particular level. For example, a device may submit a query, butthe service may be programmed not to respond unless its confidence inits results is sufficient, and the device may simply not display resultsfrom the service in that case.

FIG. 2 shows an example search session by a user of a mobile computingdevice and corresponding search results from a variety of sources. Ingeneral, what is shown is the characters entered by a user of a device200 and the responses made by applications that manage certain corpusesof information that might be of interest to a user of the device 200.

The relevant components that play a role in the user's search sessionare shown across the top of the figure. First, a search application 202receives queries from the user and distributes the queries to the otherillustrated components. Second, an operating system 204 represents coreapplications that may be part of the device operating system itself suchas a contacts manager. Third, a media player 206 represents anapplication that may not be integrated with the operating system, butthat was instead purchased by the user of the device 200 from a thirdparty, and installed on the device 202 after the purchase and set-up ofthe device 200. Each of these three components are enveloped by a dottedline that represents the device 200, and thus represents that each suchcomponent involves search that is local to the device, rather thansearch that is handled by a remote service such as a commercial searchengine.

Box 208 shows such a commercial search service. The service can takemany forms, and in a typical form would provide web search results inresponse to the submission of queries formed from alphanumericcharacters.

A first character entered by the user is shown at step 210. The letteris “g”, and triggers two different types of responses by variousoperating system components. First, the names of two applications—Gmailand Grin Factory—are returned by the operating system components.Second, the names of two of the user's contacts are shown. Such resultsmay be passed back to the search application 202 as quickly as possibleso that they can be displayed to the user while the user is stilltyping.

The media player 206 has generated two types of results—a song title andtwo band names. Though shown alone in this example, the results couldalso include additional metadata such as labels “song” and “group” or“artist”. In addition, the media player 206 would be expected to returnto the search application 202 information needed to generate a hyperlinkso that a user of the device 200 can quickly select the song title tolisten to that particular song, or can select one of the band names tosee a complete list of songs by that band that are stored on the device200 or are available for steaming via the media player 206.

For its part, the search service 208 has generated no results for theletter “g”. This is not because there are no results—rather, it isbecause there would likely be too many results for the results to bemeaningful to the user of device 202. As a result, the results aresuppressed for the first two characters of a query that a user enters.Such suppression may occur by the search application 202 failing to sendquery information to the search service 208 until a predetermined numberof characters appear in the search field, or can also occur by thesearch service 208 receiving a query but refusing to provide a response,such as where a quality score of all the responses falls below apredetermined threshold level.

The second character is shown at step 212, where the characters “go”have been entered. The operating system 204 components have responded byeliminating three of the prior results that are no longer responsive,showing one of the prior responses twice (perhaps by error or perhapsbecause that persona appears as a contact and a meeting reminder), andby adding a new matching result. That result may have matched before,but was ranked low enough that it was not returned by the relevantoperating system component. With respect to this aspect of the processshown here, it may be in the best interest of an application to notreturn all matching results, and the particular application may makesuch a determination to limit the matches that it returns. Inparticular, a user may be unsatisfied with the performance of anapplication if it returns results that have marginal relevance, even ifthey are technically matches. Also, the search application 202 or an APIby which the applications communicate with the search application mayimpose limits on the number of results that may be returned to thesearch application 202.

The third character is shown at step 214, where the characters “gos”have been entered by a user. The operating system components 204 havenow narrowed to a result that is a single contact. The media player 206has eliminated all of its prior results, and located a movie—GosfordPark—that was not previously shown, perhaps because it had received avery low rating from the user or from an on-line rating source, orperhaps because it had not been accessed on the device 200 for a verylong time. Also, the search service 208 has finally been brought intothe process, and has provided two results in the form of suggestions—onefor a young bird, and another for a Soviet economic planning committee.These results may have been returned as suggestions, either because theywere the only matches in the corpus that the search service 208 wasanalyzing or because there had been extensive recent interest in thetopics, as judged by a number of search queries containing the termsthat were received by the search service 208.

Device 216 shows the manner in which the search application mayintegrate and display the various results that are received at step 214.First, the device 216 shows a search box 218 in a standard form, withthe characters “gos” having been entered into the box 218. A searchbutton 220 is also shown, but has not been selected to indicate a userintent to submit a complete search query, so that some of the results222 are in the form of suggestions for completing the user'spartially-completed query. The contact is shown first, indicating thatheuristic rules programmed into the search application 202, whencombined with usage data for a contact (e.g., a number of times orpercentage of times or other frequency with which the user has selectedcontacts when they are presented in a result set), indicate that theuser is likely to be most interested in the contact. The fact that thecontact corpus generated only one result may also play a role in itsrank in the results 222 being elevated relative to other results. Thesecond result is the two web search results returned by the searchservice. Because there are multiple results in this corpus, the actualidentity of either result is not shown, and instead, a summary is shownto indicate that there are two suggestions for web searches. If the userselects (or hovers over) this area in the results 222, they will beshown the two results, and if they select one of the results, a searchwill be performed on the term of that particular selected result. Thethird result is the movie from the media player 206. As indicatedbefore, the media player had ranked the movie pretty low relative toother results, and it is again ranked low in the list of global resultsacross the multiple corpuses. That low ranking may be based on theheuristic rules or usage information discussed above, or may also bebased on a score that the media player passed to the search application202. However, mechanisms may be required where the search application202 is relying on scoring from third-party applications so as to preventany cheating by applications that attempt to push their results higherimproperly. Also, the display shows that the movie is tagged as a moviein the result set, so that the media player 206 must have passed thatpiece of meta data along with the movie title. The movie title may alsobe in the form of a hyperlink that points to the media file for themovie on the device 216 or on a remote server (e.g., for streamingapplications) so that a user's selection of the title causes the movieto start playing, or detailed information about the movie to be shown(e.g., a list of stars, a summary, reviews, and the like).

FIG. 3 is a schematic diagram of a system 300 that provides searchresults from third-party applications and other corpuses of data. Thesystem 300 may be implemented using a mobile device such as device 302.The device 302 includes various input and output mechanisms such as atouch screen display 304 and a keyboard. A number of components withindevice 302 may be configured to provide various search and presentationfunctionality on display 304, such as gathering, integrating, andpresenting search results from multiple different sources and corpuses.

One such component is a display manager 312, which may be responsiblefor rendering content for presentation on display 304. The displaymanager 312 may receive graphic-related content from a number of sourcesand may determine how the content is to be provided to a user. Forexample, a number of different windows for various applications 310 onthe device 304 may need to be displayed, and the display manager 312 maydetermine which to display, which to hide, and what to display or hidewhen there is overlap between various graphical objects.

An input manager 314 may be responsible for translating commandsprovided by a user of device 302. For example, such commands may comefrom a keyboard, from touch screen display 304, or from other suchsources, including dedicated buttons, trackballs, or soft buttons (e.g.,buttons whose functions may change over time, and whose functions may bedisplayed on areas of display 304 that are adjacent to the particularbuttons). The input may also occur more inferentially, such as fromsignals provided by an on-board compass or accelerometer. The inputmanager 314 may determine, for example, in what area of the displaycommands are being received, and thus in what application being shown onthe display the commands are intended for. In addition, the inputmanager 314 may interpret input motions on the touch screen 304 into acommon format and pass those interpreted motions (e.g., short press,long press, flicks, and straight-line drags) to the appropriateapplication. The input manager 314 may also report such inputs to anevent manager (not shown) that in turn reports them to the appropriatemodules or applications.

A variety of applications may operate, generally on a commonmicroprocessor, on the device 302. One such application, which may bebundled with the device when it is sold or added to the device later, issearch manager application 320. The search manager application 320 isresponsible for placing a search box on the screen 304 or otherwiseproviding a mechanism through which a user can enter queries. The searchmanager application 320 is also responsible for taking the queries andsending them via multiple threads, to various other applications, suchas applications 322, 324 on the device 304, and to remote systems.Furthermore, the search manager application 320 is responsible forreceiving results back from those objects, and for compiling the resultsinto a ranked list of search results that span across multiple corpuses,such as in the manners discussed above and below. The search managerapplication 320 and other applications on the device 304 may depend onvarious forms of data stored on the device 304. First, user information318 may stored information that reflects preferences of a user of thedevice 304. Such preferences may be identified explicitly by the user,such as in a user profile that defines how the user wants the display304 to look, or how the user wants other parameters of the device 302 tobehave. The preferences may also be implicit, such as data indicatingthe sorts of search results the user typically selects or theapplications the user launches frequently. Such information can be usedto affect the rank of a search result in a combined search result setcreated by the search manager application 320.

Various applications can also access application information 316. Suchinformation may take a variety of forms, and may include actual datathat is central to the application, such as documents for businessproductivity programs, media files for a media player, or other similarfiles. The information 316 may also include meta data, such as rankingsthat the user has given to a particular piece of media, or the number oftimes the user has played it. Again, such information may be used toinfer the user's interest in a corpus of data associated with a group ofsearch results, and may cause results that correspond to that corpus tobe elevated or lowered in a search result grouping.

The various applications 322, 324 are applications that have registeredthemselves with the search manager application 320, so that the searchmanager application 320 knows to send them queries when queries areentered into the search manager application 320. The registrationinformation can include an address or other mechanism for telling thesearch manager application 320 where to send the information so that therelevant application will be notified and can begin to process aresponse as quickly as possible. Other applications on the device thatare not shown in this figure, have not registered themselves asapplications that would like to be made part of the search process.

A wireless interface 308 may also receive communications from searchmanager application 320, so as to pass such information (e.g., queries)to remote services, such as services running on application server 332,and search servers 334 and 336. Such communications may occur over oneor more networks, include a LAN, a WAN, and the internet 330, inaddition to a wireless network with which the device 302 is subscribed.

The application server 332 may be associated with one of applications322 and 324, and may be accessed by the applications 322 and 324 toobtain data or supplemental data in responding to a query. For example,a media player program on a device 302 may be able to return a songtitle and limited other information as a search result, but theapplication may be provided with the ability to deliver additionalfunctionality by additionally searching lyrics that are stored andindexed on application server 332. As a result, such an applicationwould not be limited to responding to queries simply for sing titles andartists, and would also not be limited to delivering results merely inthe form of titles and other limited data. The applications 322 and 324can also access the application server 332 outside the context of thesearching described here. For example, a media player application couldaccess lyric information while playing any media file so that a user ofdevice 302 can see the lyrics as they are sung/played.

The search servers may be accessed directly by the search managerapplication 320 in manners like those discussed above. Two searchservers 336 are shown here to represent two different corpuses (e.g.,web and image) that can be searched simultaneously, though multiplecorpuses may be searched and delivered through a single gateway. Asnoted above also, the search servers 334 may be suspended fromdelivering results through the search manager application 320 untilafter a user has entered a sufficient amount of information to make theresults from the search servers 334, 336 reasonably useful.

In this manner, the various components of system 300 can provide asuperior search experience for a user of device 302. In particular, theuser can be provided results form multiple corpora and multipleapplications in a single result set. The result set may also be orderedaccording to interactions that the user has had with results formparticular corpora in prior search result sets, e.g., so that frequentuser selections from a particular corpus will cause other results fromthat corpus to be ranked higher in future result sets.

FIG. 4A is a flow chart of an example process for providing searchresults from a plurality of data sources. In general, the processinvolves the registration of third-party applications with a searchservice provided on a computing device, subsequent spreading of searchqueries to registered applications and other search sources, andintegrating of search results from the various services.

The process begins at box 402, where the search service receives aregistration request from each of one or more third-party applicationsthat have been loaded on the device. The request may be made accordingto a published API for the search service, and the applications may eachsubmit information sufficient for the search service to send searchquery information to the registering applications. The search servicemay also check an external source to determine whether the third-partyapplication is sufficiently trusted or legitimate to be allowed accessto putting search results into a result set for the search service.

At box 404, the search service detects input in a search box. Suchdetection may occur by a user making a search application active, orsimply by a user entering text into a search box that may bepersistently displayed as part of a user interface (e.g., in a toolbaror system tray or similar structure). The detection may occur for everycharacter that a user enters, so that search results are returned forevery keystroke from the user. Such an approach may allow the user tosave time and keystrokes, as it may present to the user the search termthat the user has begun entering (e.g., as a suggestion) or may presentsearch results before a user has finished entering a query.

At box 406, the search service sends the entered characters to theregistered applications. Such submission may be repeated for everycharacter that is entered (including characters that delete apreviously-entered character). The query characters may also besubmitted to more traditional sources other than registered third-partyapplications, such as operating system components on the user'scomputing device and remote search systems that are far from thecomputing device, and accessed over the internet (box 408).

The service can then receive responses from the various applications orservices to which it sent the query information and can beginintegrating the received information into a single global result set.The integration can occur in a batch or serially. For batch integration,the process may wait until all of the applications or services haveresponded, or a timeout period has expired, and may then present theresult set to the user (after ordering it in a ranked order). For serialintegration, the results can be shown to the user as they arrive backfrom the various services or applications. The newly arriving resultscan be slotted into position in the result set as the user watches theresult set change and evolve. Thus, results that are local to the devicemay be returned first, while results form remote servers may be returnedlast. Where latency is minimal, the difference in timing may beimperceptible to the user.

In determining how and if to display a particular result, the processmay check usage information for particular results in prior searchresult sets (box 412). For example, results for a new third-partyapplication may initially be kept on a second screen of results until auser selects a result from the application one or more times. Such userselection may provide an implicit suggestion that the user likes seeingresults from that application or corpus, so that future results form theapplication or corpus may receive a higher ranking and may be displayedon a first page in the result set.

At box 414, the responses are aggregated for display to the user. Asnoted above, the aggregation may occur as a batch or serially. Also, theorder of the results may take into account a number of signals inaddition to a user's interaction with prior results. For example, theprocess may obtain data regarding other users' interactions with resultsfor particular applications so that results shown to the present usermay be properly tuned (at least according to the preferences of thegroup) even before the particular user has expressed a preference. Also,certain types of applications or certain types of data may be biasedtoward a particular weighting, with the understanding that, even if auser does select results from that area for a period, the user is stillunlikely to want to see such results high on their list for a long timeperiod.

Finally, at box 416, the results are displayed. Again, the display neednot occur after all results have been returned and ranked, and theparticular manner in which the results are displayed in a graphical userinterface may vary depending on the situation.

FIG. 4B is a flow chart of an example process for providing searchresults from a plurality of data sources in a particular ranked order.This process is generally similar to the process shown in FIG. 4A butprovides additional detail regarding the ranking of search results on acomputing device.

The process starts at box 420, where query input is received from asearch box or other component. (Applications have presumably alreadyregistered themselves with the system, where such registration is neededto perform global searching across multiple corpora.) At box 422, thequery is broadcast to relevant applications and services, in mannerssimilar to those discussed above. At box 424, local results are returnedto the process, such as results from operating system components andfrom third-party applications that are running on the computing device.Such results will generally (though not always) arrive first becausethey do not have a long round-trip path. Then, at box 426, results fromapplications and services arrive. These later results may be fromthird-party applications that needed to acquire data from a remoteservice (e.g., in the music lyric example above), and the services wouldbe services hosted by remote server systems.

At box 428, the corpora from which results were returned are ranked.Such ranking may occur by a number of signals, including primaryrelevance and usage data. Primary relevance indicates how important theparticular corpora is presumed to be to the user in the context ofsearch results. Such a determination may be made without regard toparticular actions by the particular user, such as by determining thatparticular corpora are more relevant than other corpora. Thedetermination may also take into account characteristics of theparticular user, such as age (e.g., college-age users may presumablyprefer to have music selections shown high in a search result).

The usage data involves analysis of the ways in which the particularusers or other users in aggregate have reacted to particular data. Forexample, if the particular user frequently selects songs when searching,the grouping of results from the user's media player application may beelevated in a result set. Similarly, if all users of a device, all usersin the particular user's social network or demographic group, or anotherrelevant group of users, frequently make such a selection, the selectedcorpus may be elevated in the result rankings. The ranking of a corpusmay also depend on the perceived quality of the search results that arebeing returned by the search process. For example, if a particularcorpus generates results that are perceived by the ranking algorithm tobe direct hits, the entire corpus may be elevated in the searchrankings.

Finally, at box 430, the results are displayed to the user according tothe determined rankings.

FIG. 5 is a swim lane diagram that shows a process for delivering searchresults for multiple corpora. In general, this process is similar to theprocesses shown in FIGS. 4A and 4B, but shows in more detail the rolesplayed by particular components in the search system.

The process begins at box 502 where one or more third-party applicationsregister themselves with a local search application, and the localsearch application records and stores information regarding theregistered applications. The local search application may also check thebona fides of the requesting applications to ensure that they are notnefarious.

At box 506, the local search application receives character input from auser of the application, and at box 508, the local search applicationchecks the main data sources to which it has direct access (e.g.,contacts, application names, and similar data) and sends the inputcharacters to the registered applications. At box 510, each relevantregistered application receives the entered characters and performs asearch of its corpus or corpora. The applications then return theresults that they found for the characters, generally in parallel witheach other. As the responses arrive at the local search application fromthe various third-party applications, the local search applicationcombines the received results with the results from the main datasources that it identified itself (box 512). At this stage, not enoughcharacters have been entered for the local search application to forwardthe query information to remote search systems.

At box 514, however, additional characters are typed or spoken by auser, and the local search application again checks the main datasources and sends the new characters to the registered applications. Thelocal search application also sends the characters to the search engine,and the third-party applications (box 520) and search engine (box 518)process the queries and return search results to the local searchapplication. At box 522, the local search application receives theresponses and combines them with the main data sources, including byranking them such as in the manners discussed above. Finally, at box524, the process displays all of the integrated results to the user ofthe device (box 524).

FIG. 6 shows screen shots from a mobile computing device deliveringsearch results for multiple corpora. The left screen shot generallyshows a result set from entering the letter “a” in a search box for amobile device, such as a device running the Android operating system.The first result in the list offers the user a chance simply to submitthe letter “a” as a final and complete search query. The second resultshows that the user has one bookmark that starts with the letter “a”.The third result shows two applications on the device start with theletter “a,” and the fourth shows two additional bookmarks in thisregard. Finally, there are seven GOOGLE search results and sevencontacts for the user that begin with the letter.

The right screen shows what may be shown if a “more” selection isprovided on the first screen and a user selects that control. The “more”selection may expose results from corpora or applications that are not,at the moment, considered to be primary, though a user's selection ofone of the results on the second screen may cause the related corpus tobe moved up in relevance so that it appears on the first result screen.In this example, the user has installed a certain application fromAMAZON.COM, and also includes a particular contact whose name startswith “a,” among other things. Thus, in short, the integrated searchresults may span across multiple distinct pages, and certain corpuses ofinformation may be elevated or lowered across the dividing line betweenthe pages, depending on whether a user has selected content from thosecorpuses in the recent history of the user's interaction with theirdevice.

FIG. 7 shows an example of a generic computer device 700 and a genericmobile computer device 750, which may be used with the techniquesdescribed here. Computing device 700 is intended to represent variousforms of digital computers, such as laptops, desktops, workstations,personal digital assistants, servers, blade servers, mainframes, andother appropriate computers. Computing device 750 is intended torepresent various forms of mobile devices, such as personal digitalassistants, cellular telephones, smartphones, and other similarcomputing devices. The components shown here, their connections andrelationships, and their functions, are meant to be exemplary only, andare not meant to limit implementations of the inventions describedand/or claimed in this document.

Computing device 700 includes a processor 702, memory 704, a storagedevice 706, a high-speed interface 708 connecting to memory 704 andhigh-speed expansion ports 710, and a low speed interface 712 connectingto low speed bus 714 and storage device 706. Each of the components 702,704, 706, 708, 710, and 712, are interconnected using various busses,and may be mounted on a common motherboard or in other manners asappropriate. The processor 702 can process instructions for executionwithin the computing device 700, including instructions stored in thememory 704 or on the storage device 706 to display graphical informationfor a GUI on an external input/output device, such as display 716coupled to high speed interface 708. In other implementations, multipleprocessors and/or multiple buses may be used, as appropriate, along withmultiple memories and types of memory. Also, multiple computing devices700 may be connected, with each device providing portions of thenecessary operations (e.g., as a server bank, a group of blade servers,or a multi-processor system).

The memory 704 stores information within the computing device 700. Inone implementation, the memory 704 is a volatile memory unit or units.In another implementation, the memory 704 is a non-volatile memory unitor units. The memory 704 may also be another form of computer-readablemedium, such as a magnetic or optical disk.

The storage device 706 is capable of providing mass storage for thecomputing device 700. In one implementation, the storage device 706 maybe or contain a computer-readable medium, such as a floppy disk device,a hard disk device, an optical disk device, or a tape device, a flashmemory or other similar solid state memory device, or an array ofdevices, including devices in a storage area network or otherconfigurations. A computer program product can be tangibly embodied inan information carrier. The computer program product may also containinstructions that, when executed, perform one or more methods, such asthose described above. The information carrier is a computer- ormachine-readable medium, such as the memory 704, the storage device 706,memory on processor 702, or a propagated signal.

The high speed controller 708 manages bandwidth-intensive operations forthe computing device 700, while the low speed controller 712 manageslower bandwidth-intensive operations. Such allocation of functions isexemplary only. In one implementation, the high-speed controller 708 iscoupled to memory 704, display 716 (e.g., through a graphics processoror accelerator), and to high-speed expansion ports 710, which may acceptvarious expansion cards (not shown). In the implementation, low-speedcontroller 712 is coupled to storage device 706 and low-speed expansionport 714. The low-speed expansion port, which may include variouscommunication ports (e.g., USB, Bluetooth, Ethernet, wireless Ethernet)may be coupled to one or more input/output devices, such as a keyboard,a pointing device, a scanner, or a networking device such as a switch orrouter, e.g., through a network adapter.

The computing device 700 may be implemented in a number of differentforms, as shown in the figure. For example, it may be implemented as astandard server 720, or multiple times in a group of such servers. Itmay also be implemented as part of a rack server system 724. Inaddition, it may be implemented in a personal computer such as a laptopcomputer 722. Alternatively, components from computing device 700 may becombined with other components in a mobile device (not shown), such asdevice 750. Each of such devices may contain one or more of computingdevice 700, 750, and an entire system may be made up of multiplecomputing devices 700, 750 communicating with each other.

Computing device 750 includes a processor 752, memory 764, aninput/output device such as a display 754, a communication interface766, and a transceiver 768, among other components. The device 750 mayalso be provided with a storage device, such as a microdrive or otherdevice, to provide additional storage. Each of the components 750, 752,764, 754, 766, and 768, are interconnected using various buses, andseveral of the components may be mounted on a common motherboard or inother manners as appropriate.

The processor 752 can execute instructions within the computing device750, including instructions stored in the memory 764. The processor maybe implemented as a chipset of chips that include separate and multipleanalog and digital processors. The processor may provide, for example,for coordination of the other components of the device 750, such ascontrol of user interfaces, applications run by device 750, and wirelesscommunication by device 750.

Processor 752 may communicate with a user through control interface 758and display interface 756 coupled to a display 754. The display 754 maybe, for example, a TFT LCD (Thin-Film-Transistor Liquid Crystal Display)or an OLED (Organic Light Emitting Diode) display, or other appropriatedisplay technology. The display interface 756 may comprise appropriatecircuitry for driving the display 754 to present graphical and otherinformation to a user. The control interface 758 may receive commandsfrom a user and convert them for submission to the processor 752. Inaddition, an external interface 762 may be provide in communication withprocessor 752, so as to enable near area communication of device 750with other devices. External interface 762 may provide, for example, forwired communication in some implementations, or for wirelesscommunication in other implementations, and multiple interfaces may alsobe used.

The memory 764 stores information within the computing device 750. Thememory 764 can be implemented as one or more of a computer-readablemedium or media, a volatile memory unit or units, or a non-volatilememory unit or units. Expansion memory 774 may also be provided andconnected to device 750 through expansion interface 772, which mayinclude, for example, a SIMM (Single In Line Memory Module) cardinterface. Such expansion memory 774 may provide extra storage space fordevice 750, or may also store applications or other information fordevice 750. Specifically, expansion memory 774 may include instructionsto carry out or supplement the processes described above, and mayinclude secure information also. Thus, for example, expansion memory 774may be provide as a security module for device 750, and may beprogrammed with instructions that permit secure use of device 750. Inaddition, secure applications may be provided via the SIMM cards, alongwith additional information, such as placing identifying information onthe SIMM card in a non-hackable manner.

The memory may include, for example, flash memory and/or NVRAM memory,as discussed below. In one implementation, a computer program product istangibly embodied in an information carrier. The computer programproduct contains instructions that, when executed, perform one or moremethods, such as those described above. The information carrier is acomputer- or machine-readable medium, such as the memory 764, expansionmemory 774, memory on processor 752, or a propagated signal that may bereceived, for example, over transceiver 768 or external interface 762.

Device 750 may communicate wirelessly through communication interface766, which may include digital signal processing circuitry wherenecessary. Communication interface 766 may provide for communicationsunder various modes or protocols, such as GSM voice calls, SMS, EMS, orMMS messaging, CDMA, TDMA, PDC, WCDMA, CDMA2000, or GPRS, among others.Such communication may occur, for example, through radio-frequencytransceiver 768. In addition, short-range communication may occur, suchas using a Bluetooth, WiFi, or other such transceiver (not shown). Inaddition, GPS (Global Positioning System) receiver module 770 mayprovide additional navigation- and location-related wireless data todevice 750, which may be used as appropriate by applications running ondevice 750.

Device 750 may also communicate audibly using audio codec 760, which mayreceive spoken information from a user and convert it to usable digitalinformation. Audio codec 760 may likewise generate audible sound for auser, such as through a speaker, e.g., in a handset of device 750. Suchsound may include sound from voice telephone calls, may include recordedsound (e.g., voice messages, music files, etc.) and may also includesound generated by applications operating on device 750.

The computing device 750 may be implemented in a number of differentforms, as shown in the figure. For example, it may be implemented as acellular telephone 780. It may also be implemented as part of asmartphone 782, personal digital assistant, or other similar mobiledevice.

Device 750 may also include one or more different devices that arecapable of sensing motion. Examples include, but are not limited to,accelerometers and compasses. Accelerometers and compasses, or otherdevices that are capable of detecting motion or position are availablefrom any number of vendors and can sense motion in a variety of ways.For example, accelerometers can detect changes in acceleration whilecompasses can detect changes in orientation respective to the magneticNorth or South Pole. These changes in motion can be detected by thedevice 750 and used to update the display of the respective devices 750according to processes and techniques described herein.

Various implementations of the systems and techniques described here canbe realized in digital electronic circuitry, integrated circuitry,specially designed ASICs (application specific integrated circuits),computer hardware, firmware, software, and/or combinations thereof.These various implementations can include implementation in one or morecomputer programs that are executable and/or interpretable on aprogrammable system including at least one programmable processor, whichmay be special or general purpose, coupled to receive data andinstructions from, and to transmit data and instructions to, a storagesystem, at least one input device, and at least one output device.

These computer programs (also known as programs, software, softwareapplications or code) include machine instructions for a programmableprocessor, and can be implemented in a high-level procedural and/orobject-oriented programming language, and/or in assembly/machinelanguage. As used herein, the terms “machine-readable medium”“computer-readable medium” refers to any computer program product,apparatus and/or device (e.g., magnetic discs, optical disks, memory,Programmable Logic Devices (PLDs)) used to provide machine instructionsand/or data to a programmable processor, including a machine-readablemedium that receives machine instructions as a machine-readable signal.The term “machine-readable signal” refers to any signal used to providemachine instructions and/or data to a programmable processor.

To provide for interaction with a user, the systems and techniquesdescribed here can be implemented on a computer having a display device(e.g., a CRT (cathode ray tube) or LCD (liquid crystal display) monitor)for displaying information to the user and a keyboard and a pointingdevice (e.g., a mouse or a trackball) by which the user can provideinput to the computer. Other kinds of devices can be used to provide forinteraction with a user as well; for example, feedback provided to theuser can be any form of sensory feedback (e.g., visual feedback,auditory feedback, or tactile feedback); and input from the user can bereceived in any form, including acoustic, speech, or tactile input.

The systems and techniques described here can be implemented in acomputing system that includes a back end component (e.g., as a dataserver), or that includes a middleware component (e.g., an applicationserver), or that includes a front end component (e.g., a client computerhaving a graphical user interface or a Web browser through which a usercan interact with an implementation of the systems and techniquesdescribed here), or any combination of such back end, middleware, orfront end components. The components of the system can be interconnectedby any form or medium of digital data communication (e.g., acommunication network). Examples of communication networks include alocal area network (“LAN”), a wide area network (“WAN”), and theInternet.

The computing system can include clients and servers. A client andserver are generally remote from each other and typically interactthrough a communication network. The relationship of client and serverarises by virtue of computer programs running on the respectivecomputers and having a client-server relationship to each other.

A number of embodiments have been described. Nevertheless, it will beunderstood that various modifications may be made without departing fromthe spirit and scope of the invention. For example, much of thisdocument has been described with respect to messaging and mappingapplications, but other forms of graphical applications may also beaddressed, such as interactive program guides, web page navigation andzooming, and other such applications.

In addition, the logic flows depicted in the figures do not require theparticular order shown, or sequential order, to achieve desirableresults. In addition, other steps may be provided, or steps may beeliminated, from the described flows, and other components may be addedto, or removed from, the described systems. Accordingly, otherembodiments are within the scope of the following claims.

1. A computer-implemented search method, comprising: receiving, at acomputer system, a registration request from each of one or morecomputer applications installed on a computing device and registeringthe applications in response to the request, wherein the registrationrequest indicates an intent by the application to receive search queryinformation from a search application associated with the device;receiving user input on the device in the form of a query; providing thequery to the one or more registered applications; receiving responsesfrom the one or more registered applications that include data that ismanaged by the one or more registered applications; integrating theresponses into a result set; and presenting the result set with thecomputing device.
 2. The method of claim 1, wherein registering theapplications comprises storing registration information for theregistered applications, and providing the query to the one or moreregistered applications comprises accessing the registration informationto determine a mechanism for providing the query to each of theregistered applications.
 3. The method of claim 1, wherein the querycomprises characters entered by a user without entering a querysubmission command.
 4. The method of claim 3, wherein providing thequery to the one or more registered applications comprises providing anupdated query automatically to the registered applications for eachcharacter entered by the user of the computing device.
 5. The method ofclaim 4, further comprising providing the query to one or more searchservices that are remote from the computing device.
 6. The method ofclaim 5, further comprising suppressing the providing of the query tothe one or more search services until the user has entered a determinedamount of information in the query.
 7. The method of claim 6, whereinthe determined amount of information comprises a predetermined number ofcharacters in the query.
 8. The method of claim 1, wherein integratingthe responses into a result set comprises integrating responses from theregistered applications with responses from one or more operating systemcomponents on the computing device and responses from one or more remotesearch services.
 9. The method of claim 8, wherein integrating theresponses into a result set comprises ranking the responses with respectto whether each response was generated form an operating systemcomponent, from a registered application, or a remote search service.10. The method of claim 8, wherein integrating the responses into aresult set comprises ranking the responses with respect to whether theuser of the device has previously selected results provided by aparticular registered application.
 11. A computer-implemented searchmethod, comprising: receiving user input on a computing device in theform of a query; providing, with the computing device, the query to aplurality of different search result resources that include one or moreapplications on the computing device and one or more search servicesremote from the computing device; receiving a plurality of responsesfrom the plurality of different search result resources and integratingthe plurality of responses with others of the plurality of responses andplacing the responses in a ranked order; and displaying the plurality ofresults on the computing device, wherein placing the responses in aranked order comprises assigning an initial score to results from aparticular search result resource, and modifying the score positively ifa user selects a result from the particular search result resource. 12.The method of claim 11, wherein placing the responses in a ranked ordercomprises assigning an initial score to responses from applicationsinstalled on the device so that the responses do not appear on aninitial search results display, but are elevated to an initial searchresults display once a response from a particular application isselected by the user.
 13. The method of claim 11, further comprisingsuppressing the providing of the query the one or more search servicesremote from the computing device until a threshold level of informationhas been entered in the query, while providing the query to theapplications on the computing device.
 14. The method of claim 11,further comprising receiving registration requests form the one or moreapplications on the device, and registering the applications by storingregistration information for the applications, and wherein providing thequery to the one or more applications comprises accessing theregistration information to determine a mechanism for providing thequery to each of the applications.
 15. The method of claim 11, whereinproviding the query to a plurality of searh result resources comprisesproviding an updated query automatically to the registered applicationsfor each character entered by the user of the computing device.
 16. Acomputer-implemented search system, comprising: memory storingregistration information stored on a computing device, the registrationinformation identifying manners for providing search query informationentered by a user of the computing device; one or more third-partyapplications on the device corresponding to the registration informationand defining interfaces for receiving the search query information andfor providing corresponding search results generated by the third-partyapplications; and a search application having code to use theregistration information to route search query information to thethird-party applications, to integrate the search results into a resultset; and to present the result set to the user with the computingdevice.
 17. The system of claim 16, further comprising one or more ofsearch systems located remote from the computing device, wherein thesearch application includes code to provide the search query informationto the search systems, and to integrate results from the search systemswith results from the applications.
 18. The system of claim 17, furthercomprising a result ranker to produce a ranked order of the integratedresults.
 19. The system of claim 18, wherein the result ranker accessesinformation indicating the user's responses to prior resultscorresponding to the one or more third-party applications.
 20. Acomputer-implemented search system, comprising: memory storingregistration information stored on a computing device, the registrationinformation identifying manners for providing search query informationentered by a user of the computing device; one or more third-partyapplications on the device corresponding to the registration informationand defining interfaces for receiving the search query information andfor providing corresponding search results generated by the third-partyapplications; and means for generating an integrated ranked list searchresults form the one or more third-party applications.